package com.sgb.goods.api;

import com.sgb.goods.entity.AddLayoutEntity;
import com.sgb.goods.entity.AlbumEntity;
import com.sgb.goods.entity.AliProofEntity;
import com.sgb.goods.entity.ArrEntity;
import com.sgb.goods.entity.BrandEntity;
import com.sgb.goods.entity.GetSkuEntity1;
import com.sgb.goods.entity.GoodsPublishEntity;
import com.sgb.goods.entity.GoodsServicesEntity;
import com.sgb.goods.entity.MenuEntity;
import com.sgb.goods.entity.MenuEntity1;
import com.sgb.goods.entity.ProListEntity;
import com.sgb.goods.entity.ProvinceEntity;
import com.sgb.goods.entity.STArrEntity;
import com.sgb.goods.entity.STPublishEntity;
import com.sgb.goods.entity.StorageManEntity;
import com.sgb.goods.entity.UnitEntity;
import com.swgk.core.base.model.entity.BaseEntity;

import java.util.List;
import java.util.Map;

import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.PartMap;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * 商品发布api
 * 商品发布的接口都写在此处，商品发布涉及接口较多较广泛
 * @author cyj
 */
public interface GoodsPublishApi {

    /**
     * 商品发布，根据商品分类 获取分类 sku
     *
     * @param id id 三级分类id
     * @return
     */
    @FormUrlEncoded
    @POST("v1/app/user/goods/getSku")
    Call<BaseEntity<List<GetSkuEntity1>>> getSku(@Field("id") long id);

    /**
     * 商品单位列表
     *
     * @param text
     * @return
     */
    @FormUrlEncoded
    @POST("v1/app/user/goods/unitList")
    Call<BaseEntity<List<UnitEntity>>> unitList(@Field("text") String text);

    /**
     * 获取当前地址编码
     * @return
     */
    @POST("v1/app/common/getLocation")
    Call<BaseEntity<List<ProvinceEntity<List<ProvinceEntity>>>>> getCurrentArea();

    /**
     * 上传单个文件
     * @param files
     * @return
     */
    @Multipart
    @POST("v1/app/common/fileUpload")
    Call<BaseEntity<Object>> uploadFile(@PartMap Map<String, RequestBody> files);

    /**
     * 仓储列表
     * 我的-商品经营-仓储管理、商品发布
     *
     * @param pageNum
     * @param pageSize
     * @param storageName 根据查询仓储名称查询
     * @return
     */
    @FormUrlEncoded
    @POST("v1/app/management/shop/getStorageList")
    Call<BaseEntity<ProListEntity<List<StorageManEntity>>>> getStorageList(
            @Field("pageNum") int pageNum,
            @Field("pageSize") int pageSize,
            @Field("text") String storageName);

    /**
     * 供应商 根据分类id 获取商品品牌
     *
     * @param id
     * @param text 品牌名称
     * @return
     */
    @FormUrlEncoded
    @POST("v1/app/user/goods/brandList")
    Call<BaseEntity<List<BrandEntity>>> brandList(@Field("cid") String id, @Field("text") String text);

    /**
     * 属性列表
     *
     * @param id
     * @param areaCode
     * @return
     */
    @FormUrlEncoded
    @POST("v1/app/material/buyer/getSupplierGetParamVal")
    Call<BaseEntity<List<ArrEntity>>> getMaterChoose(@Field("id") String id, @Field("areaCode") String areaCode);

    /**
     * 商品分类
     *
     * @return
     */
    @POST("v1/app/user/goods/goodsCategory")
    Call<BaseEntity<List<MenuEntity<MenuEntity<MenuEntity>>>>> goodsCategory();

    /**
     * 商品分类
     *
     * @return
     */
    @POST("v1/app/user/goods/goodsCategory")
    Call<BaseEntity<List<MenuEntity1<MenuEntity1<MenuEntity1>>>>> goodsCategory1();

    /**
     * 商品服务属性
     * @param cid
     * @return
     */
    @GET("api/itemServer/supplierGetServerAndVal/{cid}")
    Call<BaseEntity<List<GoodsServicesEntity>>> goodsService(@Path("cid") String cid);

    /**
     * 发布商品
     *
     * @param goodsPublishEntity
     * @return
     */
    @POST("v1/app/user/goods/goodsPublish")
    Call<BaseEntity<Object>> goodsPublish(@Body GoodsPublishEntity goodsPublishEntity);

    /**
     * 获取视频参数
     *
     * @return
     */
    @POST("v1/app/common/getVideoParams")
    Call<BaseEntity<AliProofEntity>> getVideoParams();

    /**
     * 编辑品发布-获取商品详情
     *
     * @param id
     * @return
     */
    @FormUrlEncoded
    @POST("v1/app/user/goods/goodsPublishDetail")
    Call<BaseEntity<com.sgb.goods.entity.GoodsPublishEntity>> getNewGoodsById(@Field("id") String id);

    /**
     * 获取商砼强度和外加剂
     *
     * @return
     */
    @POST("v1/app/user/goods/concreteAttrs")
    Call<BaseEntity<List<STArrEntity>>> concreteAttrs();

    /**
     * 商砼发布
     *
     * @param stPublishEntity
     * @return
     */
    @POST("v1/app/user/goods/concretePublish")
    Call<BaseEntity<Object>> concretePublish(@Body STPublishEntity stPublishEntity);

    /**
     * 编辑品发布-获取商砼详情
     *
     * @param id
     * @return
     */
    @FormUrlEncoded
    @POST("v1/app/user/goods/concretePublishDetail")
    Call<BaseEntity<STPublishEntity>> concretePublishDetail(@Field("id") String id);

    /**
     * 网络相册列表
     *
     * @param cid
     * @return
     */
    @FormUrlEncoded
    @POST("v1/app/user/goods/getSupplierAlbumByCName")
    Call<BaseEntity<List<AlbumEntity>>> getSupplierAlbumByCName(@Field("cid") String cid);

    /**
     * 获取其他信息
     *
     * @param catId
     * @return
     */
    @GET("v1/app/user/goods/customizeTitle/getTitleColumnsByCatId")
    Call<BaseEntity<List<AddLayoutEntity<List<AddLayoutEntity>>>>> getAddLayout(@Query("catId") String catId);

    /**
     * 编辑时候获取商品其他信息
     *
     * @param itemId
     * @return
     */
    @GET("v1/app/user/goods/customizeTitle/getTitleColumnsByItemId")
    Call<BaseEntity<List<AddLayoutEntity<List<AddLayoutEntity>>>>> getGoodsOtherInfo(@Query("itemId") String itemId);

    /**
     * 编辑时候获取商砼其他信息
     *
     * @param concreteId
     * @return
     */
    @GET("v1/app/user/goods/customizeTitle/getTitleColumnsByConcreteId")
    Call<BaseEntity<List<AddLayoutEntity<List<AddLayoutEntity>>>>> getStOtherInfo(@Query("concreteId") String concreteId);

    /**
     * 网络相册
     * @param id
     * @return
     */
    @FormUrlEncoded
    @POST("v1/app/user/goods/getSupplierPhotosByAlbumId")
    Call<BaseEntity<List<AlbumEntity>>> getSupplierPhotosByAlbumId(@Field("id") String id);
}
